c++语法学习总结

您所在的位置:网站首页 std stod c++语法学习总结

c++语法学习总结

2023-06-13 13:06| 来源: 网络整理| 查看: 265

一. vector相关操作 vector() 的最大、最小值,及其对应下标 例 a[]={1,2,3,4,5,6};

最大值:int maxValue = *max_element(a,a+6); 

最小值:int minValue = *min_element(a,a+6);

例 vector v;

最大值下标:int maxPosition = max_element(v.begin(),v.end()) - v.begin(); 

最小值下标:int minPosition = min_element(v.begin(),v.end()) - v.begin();

vector的大小: vector tmp; tmp.size(); tmp.capacity();

vector的第一个元素: tmp.front();

vector的最后一个元素: tmp.back();

判断vector是否为空: tmp.empty();

删除系列: //清空元素并回收空间 vector tmp; vector().swap(tmp); 或 tmp.swap(vector());

//清空元素,但不回收空间 tmp.clear();

//清空vector中的其中一个元素 vector::iterator it; for (it = vecnum.begin(); it != vecnum.end(); ) {     //注意使用erase()方法时,迭代不要随意的++     it = vecnum.erase(it); }

删除 [begin,end)区间元素 tmp.erase(begin, end);

vector元素翻转 需要头文件#include reverse(vec.begin(),vec.end());

删除vector中重复元素: vector a = {1, 4, 4, 3, 2, 4, 2}; sort(a.begin(), a.end()); auto it = unique(a.begin(), a.end()); a.erase(it, a.end());

将一个容器中的内容追加到另一个容器的后面 std::vector v1, v2 ; v1.insert(v1.end(), v2.begin(), v2.end());

swap 函数 交换两个值 vector& nums; swap(nums[i], nums[j]);

vector和set的互相转化     vector vec;     vec = { 1, 2, 3, 4, 8, 9, 3, 2, 1, 0, 4, 8 };     set st(vec.begin(), vec.end());     vec.assign(st.begin(), st.end());           vector 求交集和并集 vector v1 = {1,2,3,4,5,6}; vector v2 = {3,4,5,6,7,8}; sort(v1.begin(), v1.end()); sort(v2.begin(), v2.end()); vector v; set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), back_inserter(v)); //求交集 vector vv; set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), back_inserter(vv)); //求并集

二. string 相关 s_str从k开始的子字符串 string sub_str = s_str.substr(k);

从 s 中找 sub_str if (s.find(sub_str) == string::npos) 找不到

string 找到字符串中的第一个出现“1”的位置 if (k = s_str.find_first_of("1")) != string::npos)

判断是否是数字 char a; if (isdigit(a))

string转换int long等 string str; int i = atoi(str.c_str()); // c int i = std::stoi(str);  // c++

stol(long), stof(float), stod(double)

去掉string的最后一位字符 string res; res.pop_back();

大写字符转换为小写字符 tolower(char ch);

比较两个字符串是否相等 string s1, s2; if ((s1.compare(s2)) == 0) 当s1 < s2时,返回为负数(-1); 当s1 == s2时,返回值= 0; 当s1 > s2时,返回正数(1)。

int转换成string to_string std::string to_string(int value); (1) (C++11起) std::string to_string(long value); (2) (C++11起) std::string to_string(long long value); (3) (C++11起) std::string to_string(unsigned value); (4) (C++11起) std::string to_string(unsigned long value); (5) (C++11起) std::string to_string(unsigned long long value); (6) (C++11起) std::string to_string(float value); (7) (C++11起) std::string to_string(double value); (8) (C++11起) std::string to_string(long double value); (9) (C++11起) 三. map 删除一个节点 auto iter = mapTest.find(key);   mapTest.erase(iter);

map dict; map::iterator iter; // 插入方式 dict.insert(pair("apple", 1)); dict.insert(map::value_type("orange", 2)); dict["purple"] = 3;

// 遍历 for (iter = dict.begin(); iter != dict.end(); iter++) {     cout first second =key的第一个元素 cout first; iter = dict.upper_bound("buoluo"); //返回一个迭代器,指向键值>key的第一个元素 cout first;

四、 stack top():返回一个栈顶元素的引用,类型为 T&。如果栈为空,返回值未定义。 push(const T& obj):可以将对象副本压入栈顶。这是通过调用底层容器的 push_back() 函数完成的。 push(T&& obj): pop(): size():返回栈中元素的个数。 empty():在栈中没有元素的情况下返回 true。 emplace():用传入的参数调用构造函数,在栈顶生成对象。 swap(stack & other_stack):

五、数字和字符的一些操作 ::min(minV, x);  // 取最小值

answer += max(0, oper);  // 0和oper中的最大值

算出len的平方根 sqrt(len)

tmp的n次方 int ans = pow(tmp, n);

将整数转成二进制 int i = 10; std::bitset tmp(i);

  std::bitset foo;  //16是长度   std::bitset bar (0xfa2);   std::bitset baz (std::string("0101111001"));

  std::cout     stringstream ioss;     string sTmp;     //以8位宽度显示,不够补0,16进制以大写输出,hex 也可写为 setbase(16)     ioss             left++;         }                  if (left == right) {             right++;         }     }      二维数组比较大小:按列从小到大排,如果第一列相等,就按第二列的从大到小排 1 2 3 4 2 10 2 3   变成 1 2  2 3  2 10  3 4   static bool cmp(vector &a, vector &b) {     if (a[0] != b[0]) {         return a[0] < b[0];     } else {         return a[1] < b[1];     } }

二维数组的遍历 vector matrixTmp(matrix); int row = matrixTmp.size(); int col = matrixTmp[0].size(); cout     for (auto &j : i) {         cout         // 递归中,写出结束条件,例如         if (i < 0 || j < 0 || i >= grid.size() || j >= grid[0].size() || grid[i][j] == 0) {             return 0;         }         // 定义两个数组,用于访问当前节点的上下左右的四个节点,进行递归调用         int di[4] = {-1,0,1,0};         int dj[4] = {0,1,0,-1};         // 遍历临近四个节点,进行递归调用         for (int index = 0; index < 4; ++index) {             int next_i = i + di[index];             int next_j = j + dj[index];             // 此处根据题目具体需求进行操作,这里只是给出一个示例             dfs(grid, next_i,next_j);         }

        return xxx;     } 

    int numIslands(vector& grid) {         // 遍历每个节点,每个节点都调用 dfs,从 dfs 中获取想要的结果         for (int i = 0; i < grid.size(); ++i) {             for (int j = 0; j < grid[0].size(); ++j) {                 dfs(grid, i, j);              }         }         return xxx;     } };



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3